import { CreateDateColumn, UpdateDateColumn } from 'typeorm';

export abstract class TimeEntity {
  @CreateDateColumn({
    type: 'bigint',
    unsigned: true,
    transformer: {
      // 保存时转化为毫秒时间戳
      to: (value: Date) => (value ? value.getTime() : null),
      // 读取时保持为数字
      from: (value: string | number) => Number(value),
    },
  })
  create_time: number; // 创建时间，存储为时间戳

  @UpdateDateColumn({
    type: 'bigint',
    unsigned: true,
    transformer: {
      to: (value: Date) => (value ? value.getTime() : null), // 插入 or 更新
      from: (value: string | number) => Number(value), // 查询
    },
    default: () => 'UNIX_TIMESTAMP(CURRENT_TIMESTAMP(3)) * 1000', // 插入时设置初始值为毫秒级时间戳
    onUpdate: 'UNIX_TIMESTAMP(CURRENT_TIMESTAMP(3)) * 1000', // 在记录更新时，设置为毫秒时
  })
  update_time: number; // 更新时间，存储为时间戳
}
